package edu.kmust.simple;
import java.util.stream.IntStream;

/**
 * @author: 常伟
 * @created: 2019/3/12 20:30
 * @email: kmustchang@qq.com
 * @Description: 第十三题：被堵塞的路径
 *          注意：被堵塞的路径不能再边缘地区，即除了边缘地区，可以使任意的位置
 */
public class ExaminationThirteen01 {

    /**表示行数*/
    int row=4;
    /**表示列数*/
    int col=5;

    int[][] state=new int[row][col];
    int [][] pathCount=new int[row][col];

    public static void main(String[] args) {
        ExaminationThirteen01 examinationThirteen01=new ExaminationThirteen01();
        examinationThirteen01.init();
        examinationThirteen01.completeCount();
        System.out.println(examinationThirteen01.pathCount[3][4]);
    }

    /**
     * 完成计算最短路径的总数
     */
    private void completeCount() {
        IntStream.range(1,row).forEach(i->
            IntStream.range(1,col).filter(j->state[i][j]==0).forEach(
                    j->pathCount[i][j]=pathCount[i-1][j]+pathCount[i][j-1]
            )
        );

    }

    /**
     * 用于完成初始化的任务
     *      1.将所有的路径边缘设置为1
     *      2.设置被堵塞路径状态
     */
    private void init() {
        IntStream.range(0,row).parallel().forEach(i->pathCount[i][0]=1);
        IntStream.range(0,col).parallel().forEach(i->pathCount[0][i]=1);
        state[2][2]=1;
    }



}
